/*
  调接口
  调后端（JAVA PHP .net c++ python）数据访问服务器 
  调接口在公司里面必然走的是封装
  在公司里面 一般都是组长 或者大牛封装好的 一般不是我们封装 但是一定要会用别人的封装
  1）开发环境 ：dev环境 development 代码正在开发时候的
  2）测试环境：test环境 我们代码都测试测
  3）预生产环境：灰度环境 
  域名：www.alibaba.com 
  域名：www.ujhghjkjhjkjkluhjh.com 用户难以访问的 域名进行最终测试
  4）生产环境 ：线上环境 master环境 production环境（生产） （明天上生产）
   https://api-hmugo-web.itheima.net/api/public/v1/goods/search
  /api/public/v1/goods/search
*/ 
let configurl="https://wxapi.yixiang.co";//http https开头生产域名
// let configurl="127.192.29.12";//IP地址域名 后面自己电脑开启的服务域名 开发都是用后端自己的
// /api/public/v1/ 业务分支
/*
  接口分支
    1.正常的增删改查的业务逻辑
    2.上传文件地址 （七牛云 阿里云 进行云端保存）
    3.下载
    4.第三方接口目录 //北斗导航 身份证校验 广告 室内地址
https://wxapi.yixiang.co/api/register/verify
*/ 
let baseurl= {
    materUrl:"/api/",
    TheThreeUrl:"第三方的路径",///api/public/v1/
    uploadUrl:"上传的接口目录",///api/public/v1/
    downLoadUrl:"下载的接口地址"///api/public/v1/
}
/*
  接口调用的函数封装
  *入参
  *url 服务器的地址
  *data 请求的参数
  *method 请求的方式
  *请求成功的回调函数
  *请求失败的回调函数
  *该接口是不是需要登录
*/ 
function request(
  url,
  data={},
  method="get",
  doSuccess,
  dofail=function(){},
  isLogin = false
){
  //获取缓存
  wx.getStorageSync('token');
  let header={};
  if(wx.getStorageSync('token')){
    header.Authorization=`Bearer ${wx.getStorageSync('token')}`
    //如果已经登录加入一个key值叫做getStorageSync('token')
  }
  console.log(wx.getStorageSync('token')) 

  // isLogin=》如果当前的接口需要用户登录并且用户没用登录我们必须强制用户先登录
  // 判断Token（令牌） 报文 （后端返回的数据 后端的地址 前端给后端的数据）
  wx.request({
    url: `${configurl}${baseurl.materUrl}${url}`,//后端的地址
    data,//给后端的数据
    method,//请求方式 GET POST PUT delete
    header,
    success:res=>{
      //res 后端返回的数据
      doSuccess(res)
    },//调用后端接口成功的回调
    fail:err=>{
      // err后端返回的失败的数据
      dofail(err)
    }//调用后端接口失败的回调

  })
}

// 先画页面 当前页面画不完不掉接口
// module.exports 模块化抛出 把当前的JS文件中所有的函数模块化 好处在于 引入该JS文件某个函数时其他函数不被读取
module.exports ={ request };
